He escrito una función de nube simple que también implementé en firebase y el código funciona. Es la siguiente función:
exports.testfunction = functions.https.onCall(async (data) => { const mydata = JSON.parse(data) const mydata1 = JSON.parse({const1: "AAA", const2: "BBB", const3: "CCC"}) return{mydata1} }); Ahora que quiero probar esta función localmente, ejecuto el siguiente comando en mi terminal: firebase emulators:start y no recibo errores hasta ahora. De todos modos, tan pronto como intento llamar a la función con http://localhost:5001/MYPROJECTNAME/us-central1/testfunction en mi navegador, recibo el siguiente mensaje de error para el que no puedo encontrar ninguna solución:
{"error":{"mensaje":"Solicitud incorrecta","estado":"ARGUMENT_INVÁLIDO"}}
La cuestión es que la función en sí funciona muy bien si la implemento y la llamo desde mi aplicación, pero no puedo ejecutarla desde mi emulador de Firebase dentro de la consola. ¿Qué estoy haciendo mal aquí?
Como se explica en la documentación de Callable Cloud Functions :
Es importante tener en cuenta que las funciones a las que se puede llamar HTTPS son similares pero no idénticas a las funciones HTTP . Para usar las funciones de llamada de HTTPS, debe usar el SDK del cliente para su plataforma junto con la API backend functions.https ( o implementar el protocolo ).
Por lo tanto, si desea llamar directamente a la función a través de su URL, su solicitud HTTP debe seguir la especificación del protocolo para https.onCall .